package com.gcb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gcb.domain.dto.CompanyUserAuditSaveDTO;
import com.gcb.domain.dto.CompanyUserQueryDTO;
import com.gcb.domain.dto.CompanyUserSaveDTO;
import com.gcb.domain.entity.CompanyUser;
import com.gcb.domain.vo.CompanyUserVO;
import com.gcb.domain.vo.GcbUserVO;

import java.util.List;

/**
 * 工船宝企业用户关系Service接口
 *
 * @author seh
 * @date 2024-03-08
 */
public interface ICompanyUserService extends IService<CompanyUser> {


    /**
     * 查询工船宝用户的企业身份
     *
     * @param userId 用户id
     * @return CompanyUser
     */
    List<CompanyUserVO> selectCompanyUserByUserId(Long userId);

    /**
     * 查企业下的所有成员列表（包含超管）
     * @param companyId 企业id
     * @return CompanyUserVO
     */
    List<CompanyUserVO> getMembersByCompanyId(Long companyId);

    /**
     * 查企业下的所有成员列表（不包含超管）
     * @param companyId 企业id
     * @return CompanyUserVO
     */
    List<CompanyUserVO> getMembersByCompanyIdWithoutUserId(Long companyId, Long userId);

    /**
     * 获取企业的超管
     * @param companyId 企业id
     * @return 超管信息
     */
    CompanyUser getLeaderByCompanyId(Long companyId);

    /**
     * 查询工船宝企业用户关系列表
     *
     * @param dto 工船宝企业用户关系
     * @return 工船宝企业用户关系集合
     */
    List<CompanyUserVO> list(CompanyUserQueryDTO dto);

    /**
     * 获取APP用户详情
     *
     * @param userId    用户id
     * @param companyId 公司id
     * @return 用户详情
     */
    CompanyUserVO getUserDetailById(Long userId, Long companyId);

    /**
     * app加入企业
     *
     * @param dto 加入信息
     */
    void joinCompany(CompanyUserAuditSaveDTO dto);

    /**
     * 切换用户所在企业的角色类型
     *
     * @param dto 修改参数
     */
    void editType(CompanyUserSaveDTO dto);

    /**
     * 移除企业成员 修改成员离职状态
     *
     * @param dto 修改参数
     */
    void editStatus(CompanyUserSaveDTO dto);
}
